home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / telecomm / misc / rsp37_1.lha / RShell-Protector.s < prev    next >
Encoding:
Text File  |  1994-10-23  |  4.1 KB  |  229 lines

  1. OpenLibrary    = -552
  2. CloseLibrary    = -414
  3. Forbid        = -132
  4. Permit        = -138
  5. SetFunction    = -420
  6. Wait        = -318
  7.  
  8. GetVar    = -906
  9. Output    = -60
  10. Write    = -48
  11.  
  12. OpenScreen        = -198        
  13. OpenScreenTagList    = -612
  14. OpenWindow        = -204        
  15. OpenWindowTagList    = -606
  16.  
  17. SIGBREAKF_CTRL_C    = (1<<12)
  18.  
  19.  
  20.     move.l    4.w,a6
  21.     lea    IntuiName(pc),a1
  22.     move.l    #37,d0
  23.     jsr    OpenLibrary(a6)
  24.     move.l    d0,IntuiBase
  25.     beq.w    NoIntui
  26.  
  27.     lea    DosName(pc),a1
  28.     move.l    #36,d0
  29.     jsr    OpenLibrary(a6)
  30.     move.l    d0,DosBase
  31.     beq.w    NoDos
  32.  
  33.     move.l    4.w,a6
  34.     jsr    Forbid(a6)
  35.  
  36.     move.l    IntuiBase(pc),a1
  37.     lea    0,a0
  38.     move.w    #OpenScreen,a0
  39.     lea    NewOpenScreen(pc),a2
  40.     move.l    a2,d0
  41.     jsr    SetFunction(a6)
  42.     move.l    d0,OldOpenScreen
  43.  
  44.     move.l    IntuiBase(pc),a1
  45.     lea    0,a0
  46.     move.w    #OpenScreenTagList,a0
  47.     lea    NewOpenScreenTagList(pc),a2
  48.     move.l    a2,d0
  49.     jsr    SetFunction(a6)
  50.     move.l    d0,OldOpenScreenTagList
  51.  
  52.     move.l    IntuiBase(pc),a1
  53.     lea    0,a0
  54.     move.w    #OpenWindow,a0
  55.     lea    NewOpenWindow(pc),a2
  56.     move.l    a2,d0
  57.     jsr    SetFunction(a6)
  58.     move.l    d0,OldOpenWindow
  59.  
  60.     move.l    IntuiBase(pc),a1
  61.     lea    0,a0
  62.     move.w    #OpenWindowTagList,a0
  63.     lea    NewOpenWindowTagList(pc),a2
  64.     move.l    a2,d0
  65.     jsr    SetFunction(a6)
  66.     move.l    d0,OldOpenWindowTagList
  67.  
  68.     jsr    Permit(a6)
  69.  
  70.     bsr.w    PrintC
  71.     jsr    Output(a6)
  72.     move.l    d0,d1
  73.     lea    Installed_Msg(pc),a0
  74.     move.l    a0,d2
  75.     moveq    #Installed_Len,d3
  76.     jsr    Write(a6)
  77.     
  78.     move.l    4.w,a6
  79.     move.l    #SIGBREAKF_CTRL_C,d0
  80.     jsr    Wait(a6)
  81. ;Ctrl-C received
  82.     move.l    IntuiBase(pc),a1
  83.     lea    0,a0
  84.     move.w    #OpenScreenTagList,a0
  85.     move.l    OldOpenScreenTagList(pc),d0
  86.     jsr    SetFunction(a6)
  87.  
  88.     move.l    IntuiBase(pc),a1
  89.     lea    0,a0
  90.     move.w    #OpenScreen,a0
  91.     move.l    OldOpenScreen(pc),d0
  92.     jsr    SetFunction(a6)
  93.  
  94.     move.l    IntuiBase(pc),a1
  95.     lea    0,a0
  96.     move.w    #OpenWindowTagList,a0
  97.     move.l    OldOpenWindowTagList(pc),d0
  98.     jsr    SetFunction(a6)
  99.     
  100.     move.l    IntuiBase(pc),a1
  101.     lea    0,a0
  102.     move.w    #OpenWindow,a0
  103.     move.l    OldOpenWindow(pc),d0
  104.     jsr    SetFunction(a6)
  105.  
  106.     bsr.w    PrintC
  107.     jsr    Output(a6)
  108.     move.l    d0,d1
  109.     lea    Removed_Msg(pc),a0
  110.     move.l    a0,d2
  111.     moveq    #Removed_Len,d3
  112.     jsr    Write(a6)
  113.  
  114.     move.l    DosBase(pc),a1
  115.     jsr    CloseLibrary(a6)    
  116. NoDos:
  117.     move.l    IntuiBase(pc),a1
  118.     jsr    CloseLibrary(a6)
  119. NoIntui:
  120.     moveq    #0,d0
  121.     rts
  122.  
  123.  
  124. NewOpenScreen:
  125.     movem.l    d0-d7/a0-a6,-(sp)
  126.     jsr    CheckVar
  127.     bne.s    OpenScreen_OK
  128.     movem.l    (sp)+,d0-d7/a0-a6
  129.     moveq    #0,d0
  130.     rts
  131. OpenScreen_OK:
  132.     movem.l    (sp)+,d0-d7/a0-a6
  133.     move.l    OldOpenScreen(pc),-(sp)
  134.     rts
  135.  
  136. NewOpenScreenTaglist:
  137.     movem.l    d0-d7/a0-a6,-(sp)
  138.     jsr    CheckVar
  139.     bne.s    OpenScreenTaglist_OK
  140.     movem.l    (sp)+,d0-d7/a0-a6
  141.     moveq    #0,d0
  142.     rts
  143. OpenScreenTaglist_OK:
  144.     movem.l    (sp)+,d0-d7/a0-a6
  145.     move.l    OldOpenScreenTaglist(pc),-(sp)
  146.     rts
  147.  
  148. NewOpenWindow:
  149.     movem.l    d0-d7/a0-a6,-(sp)
  150.     jsr    CheckVar
  151.     bne.s    OpenWindow_OK
  152.     movem.l    (sp)+,d0-d7/a0-a6
  153.     moveq    #0,d0
  154.     rts
  155. OpenWindow_OK:
  156.     movem.l    (sp)+,d0-d7/a0-a6
  157.     move.l    OldOpenWindow(pc),-(sp)
  158.     rts
  159.  
  160. NewOpenWindowTaglist:
  161.     movem.l    d0-d7/a0-a6,-(sp)
  162.     jsr    CheckVar
  163.     bne.s    OpenWindowTaglist_OK
  164.     movem.l    (sp)+,d0-d7/a0-a6
  165.     moveq    #0,d0
  166.     rts
  167. OpenWindowTaglist_OK:
  168.     movem.l    (sp)+,d0-d7/a0-a6
  169.     move.l    OldOpenWindowTaglist(pc),-(sp)
  170.     rts
  171.  
  172. CheckVar:
  173.     move.l    DosBase(pc),a6
  174.     lea    VarName(pc),a0
  175.     move.l    a0,d1
  176.     lea    VarBuf(pc),a0
  177.     move.l    a0,d2
  178.     moveq    #1,d3
  179.     move.l    #$200,d4        ;GVF_LOCAL_ONLY
  180.     jsr    GetVar(a6)
  181.     cmpi.l    #-1,d0
  182.     bne.s    CV_IOSer
  183.     moveq    #1,d0
  184.     rts
  185. CV_IOSer:
  186.     move.l    DosBase(pc),a6
  187.     jsr    Output(a6)
  188.     move.l    d0,d1
  189.     lea    ErrorNoDisplay_Msg(pc),a0
  190.     move.l    a0,d2
  191.     move.l    #ErrorNoDisplay_Len,d3
  192.     jsr    Write(a6)
  193.     moveq    #0,d0
  194.     rts
  195.  
  196. PrintC:    
  197.     move.l    DosBase(pc),a6
  198.     jsr    Output(a6)
  199.     move.l    d0,d1
  200.     lea    Copyright_Msg(pc),a0
  201.     move.l    a0,d2
  202.     move.l    #Copyright_Len,d3
  203.     jsr    Write(a6)
  204.     rts
  205.  
  206. OldOpenscreen:        dc.l    0
  207. OldOpenscreentaglist:    dc.l    0
  208. OldOpenwindow:        dc.l    0
  209. OldOpenwindowtaglist:    dc.l    0
  210. IntuiBase:        dc.l    0
  211. DosBase:        dc.l    0
  212. OutputHandle:        dc.l    0
  213. ShellTask:        dc.l    0
  214. VarBuf:            dc.w    0
  215. VarName:        dc.b    "RSHELL-PROTECTOR",0
  216. IntuiName:        dc.b    "intuition.library",0
  217. DosName:        dc.b    "dos.library",0
  218. ErrorNoDisplay_Msg:    dc.b    $7,"You are using an ASCII-only terminal.",$a
  219.             dc.b    "Could not open intuition GUI!",$a
  220. ErrorNoDisplay_Len:    EQU    *-ErrorNoDisplay_Msg
  221. Copyright_Msg:        dc.b    $1b,"[32mRemoteShell-Protector V37.1",$a
  222.             dc.b    "(L) 1994 by Lunkwill & Skywalker",$a
  223.             dc.b    $1b,"[0mPatches "
  224. Copyright_Len:        EQU    *-Copyright_Msg
  225. Installed_Msg:        dc.b    "installed!",$a
  226. Installed_Len:        EQU    *-Installed_Msg
  227. Removed_Msg:        dc.b    "removed!",$a
  228. Removed_Len:        EQU    *-Removed_Msg
  229.